↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
log2_in_ag(X, Y) → U1_ag(X, Y, log2_in_agg(X, 0, Y))
log2_in_agg(0, I, I) → log2_out_agg(0, I, I)
log2_in_agg(s(0), I, I) → log2_out_agg(s(0), I, I)
log2_in_agg(s(s(X)), I, Y) → U2_agg(X, I, Y, half_in_ga(s(s(X)), X1))
half_in_ga(0, 0) → half_out_ga(0, 0)
half_in_ga(s(0), 0) → half_out_ga(s(0), 0)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
U2_agg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_agg(X, I, Y, log2_in_ggg(X1, s(I), Y))
log2_in_ggg(0, I, I) → log2_out_ggg(0, I, I)
log2_in_ggg(s(0), I, I) → log2_out_ggg(s(0), I, I)
log2_in_ggg(s(s(X)), I, Y) → U2_ggg(X, I, Y, half_in_ga(s(s(X)), X1))
U2_ggg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_ggg(X, I, Y, log2_in_ggg(X1, s(I), Y))
U3_ggg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_ggg(s(s(X)), I, Y)
U3_agg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_agg(s(s(X)), I, Y)
U1_ag(X, Y, log2_out_agg(X, 0, Y)) → log2_out_ag(X, Y)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
log2_in_ag(X, Y) → U1_ag(X, Y, log2_in_agg(X, 0, Y))
log2_in_agg(0, I, I) → log2_out_agg(0, I, I)
log2_in_agg(s(0), I, I) → log2_out_agg(s(0), I, I)
log2_in_agg(s(s(X)), I, Y) → U2_agg(X, I, Y, half_in_ga(s(s(X)), X1))
half_in_ga(0, 0) → half_out_ga(0, 0)
half_in_ga(s(0), 0) → half_out_ga(s(0), 0)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
U2_agg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_agg(X, I, Y, log2_in_ggg(X1, s(I), Y))
log2_in_ggg(0, I, I) → log2_out_ggg(0, I, I)
log2_in_ggg(s(0), I, I) → log2_out_ggg(s(0), I, I)
log2_in_ggg(s(s(X)), I, Y) → U2_ggg(X, I, Y, half_in_ga(s(s(X)), X1))
U2_ggg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_ggg(X, I, Y, log2_in_ggg(X1, s(I), Y))
U3_ggg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_ggg(s(s(X)), I, Y)
U3_agg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_agg(s(s(X)), I, Y)
U1_ag(X, Y, log2_out_agg(X, 0, Y)) → log2_out_ag(X, Y)
LOG2_IN_AG(X, Y) → U1_AG(X, Y, log2_in_agg(X, 0, Y))
LOG2_IN_AG(X, Y) → LOG2_IN_AGG(X, 0, Y)
LOG2_IN_AGG(s(s(X)), I, Y) → U2_AGG(X, I, Y, half_in_ga(s(s(X)), X1))
LOG2_IN_AGG(s(s(X)), I, Y) → HALF_IN_GA(s(s(X)), X1)
HALF_IN_GA(s(s(X)), s(Y)) → U4_GA(X, Y, half_in_aa(X, Y))
HALF_IN_GA(s(s(X)), s(Y)) → HALF_IN_AA(X, Y)
HALF_IN_AA(s(s(X)), s(Y)) → U4_AA(X, Y, half_in_aa(X, Y))
HALF_IN_AA(s(s(X)), s(Y)) → HALF_IN_AA(X, Y)
U2_AGG(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_AGG(X, I, Y, log2_in_ggg(X1, s(I), Y))
U2_AGG(X, I, Y, half_out_ga(s(s(X)), X1)) → LOG2_IN_GGG(X1, s(I), Y)
LOG2_IN_GGG(s(s(X)), I, Y) → U2_GGG(X, I, Y, half_in_ga(s(s(X)), X1))
LOG2_IN_GGG(s(s(X)), I, Y) → HALF_IN_GA(s(s(X)), X1)
U2_GGG(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_GGG(X, I, Y, log2_in_ggg(X1, s(I), Y))
U2_GGG(X, I, Y, half_out_ga(s(s(X)), X1)) → LOG2_IN_GGG(X1, s(I), Y)
log2_in_ag(X, Y) → U1_ag(X, Y, log2_in_agg(X, 0, Y))
log2_in_agg(0, I, I) → log2_out_agg(0, I, I)
log2_in_agg(s(0), I, I) → log2_out_agg(s(0), I, I)
log2_in_agg(s(s(X)), I, Y) → U2_agg(X, I, Y, half_in_ga(s(s(X)), X1))
half_in_ga(0, 0) → half_out_ga(0, 0)
half_in_ga(s(0), 0) → half_out_ga(s(0), 0)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
U2_agg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_agg(X, I, Y, log2_in_ggg(X1, s(I), Y))
log2_in_ggg(0, I, I) → log2_out_ggg(0, I, I)
log2_in_ggg(s(0), I, I) → log2_out_ggg(s(0), I, I)
log2_in_ggg(s(s(X)), I, Y) → U2_ggg(X, I, Y, half_in_ga(s(s(X)), X1))
U2_ggg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_ggg(X, I, Y, log2_in_ggg(X1, s(I), Y))
U3_ggg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_ggg(s(s(X)), I, Y)
U3_agg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_agg(s(s(X)), I, Y)
U1_ag(X, Y, log2_out_agg(X, 0, Y)) → log2_out_ag(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
LOG2_IN_AG(X, Y) → U1_AG(X, Y, log2_in_agg(X, 0, Y))
LOG2_IN_AG(X, Y) → LOG2_IN_AGG(X, 0, Y)
LOG2_IN_AGG(s(s(X)), I, Y) → U2_AGG(X, I, Y, half_in_ga(s(s(X)), X1))
LOG2_IN_AGG(s(s(X)), I, Y) → HALF_IN_GA(s(s(X)), X1)
HALF_IN_GA(s(s(X)), s(Y)) → U4_GA(X, Y, half_in_aa(X, Y))
HALF_IN_GA(s(s(X)), s(Y)) → HALF_IN_AA(X, Y)
HALF_IN_AA(s(s(X)), s(Y)) → U4_AA(X, Y, half_in_aa(X, Y))
HALF_IN_AA(s(s(X)), s(Y)) → HALF_IN_AA(X, Y)
U2_AGG(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_AGG(X, I, Y, log2_in_ggg(X1, s(I), Y))
U2_AGG(X, I, Y, half_out_ga(s(s(X)), X1)) → LOG2_IN_GGG(X1, s(I), Y)
LOG2_IN_GGG(s(s(X)), I, Y) → U2_GGG(X, I, Y, half_in_ga(s(s(X)), X1))
LOG2_IN_GGG(s(s(X)), I, Y) → HALF_IN_GA(s(s(X)), X1)
U2_GGG(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_GGG(X, I, Y, log2_in_ggg(X1, s(I), Y))
U2_GGG(X, I, Y, half_out_ga(s(s(X)), X1)) → LOG2_IN_GGG(X1, s(I), Y)
log2_in_ag(X, Y) → U1_ag(X, Y, log2_in_agg(X, 0, Y))
log2_in_agg(0, I, I) → log2_out_agg(0, I, I)
log2_in_agg(s(0), I, I) → log2_out_agg(s(0), I, I)
log2_in_agg(s(s(X)), I, Y) → U2_agg(X, I, Y, half_in_ga(s(s(X)), X1))
half_in_ga(0, 0) → half_out_ga(0, 0)
half_in_ga(s(0), 0) → half_out_ga(s(0), 0)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
U2_agg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_agg(X, I, Y, log2_in_ggg(X1, s(I), Y))
log2_in_ggg(0, I, I) → log2_out_ggg(0, I, I)
log2_in_ggg(s(0), I, I) → log2_out_ggg(s(0), I, I)
log2_in_ggg(s(s(X)), I, Y) → U2_ggg(X, I, Y, half_in_ga(s(s(X)), X1))
U2_ggg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_ggg(X, I, Y, log2_in_ggg(X1, s(I), Y))
U3_ggg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_ggg(s(s(X)), I, Y)
U3_agg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_agg(s(s(X)), I, Y)
U1_ag(X, Y, log2_out_agg(X, 0, Y)) → log2_out_ag(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
HALF_IN_AA(s(s(X)), s(Y)) → HALF_IN_AA(X, Y)
log2_in_ag(X, Y) → U1_ag(X, Y, log2_in_agg(X, 0, Y))
log2_in_agg(0, I, I) → log2_out_agg(0, I, I)
log2_in_agg(s(0), I, I) → log2_out_agg(s(0), I, I)
log2_in_agg(s(s(X)), I, Y) → U2_agg(X, I, Y, half_in_ga(s(s(X)), X1))
half_in_ga(0, 0) → half_out_ga(0, 0)
half_in_ga(s(0), 0) → half_out_ga(s(0), 0)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
U2_agg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_agg(X, I, Y, log2_in_ggg(X1, s(I), Y))
log2_in_ggg(0, I, I) → log2_out_ggg(0, I, I)
log2_in_ggg(s(0), I, I) → log2_out_ggg(s(0), I, I)
log2_in_ggg(s(s(X)), I, Y) → U2_ggg(X, I, Y, half_in_ga(s(s(X)), X1))
U2_ggg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_ggg(X, I, Y, log2_in_ggg(X1, s(I), Y))
U3_ggg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_ggg(s(s(X)), I, Y)
U3_agg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_agg(s(s(X)), I, Y)
U1_ag(X, Y, log2_out_agg(X, 0, Y)) → log2_out_ag(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
HALF_IN_AA(s(s(X)), s(Y)) → HALF_IN_AA(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
HALF_IN_AA → HALF_IN_AA
HALF_IN_AA → HALF_IN_AA
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
LOG2_IN_GGG(s(s(X)), I, Y) → U2_GGG(X, I, Y, half_in_ga(s(s(X)), X1))
U2_GGG(X, I, Y, half_out_ga(s(s(X)), X1)) → LOG2_IN_GGG(X1, s(I), Y)
log2_in_ag(X, Y) → U1_ag(X, Y, log2_in_agg(X, 0, Y))
log2_in_agg(0, I, I) → log2_out_agg(0, I, I)
log2_in_agg(s(0), I, I) → log2_out_agg(s(0), I, I)
log2_in_agg(s(s(X)), I, Y) → U2_agg(X, I, Y, half_in_ga(s(s(X)), X1))
half_in_ga(0, 0) → half_out_ga(0, 0)
half_in_ga(s(0), 0) → half_out_ga(s(0), 0)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
U2_agg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_agg(X, I, Y, log2_in_ggg(X1, s(I), Y))
log2_in_ggg(0, I, I) → log2_out_ggg(0, I, I)
log2_in_ggg(s(0), I, I) → log2_out_ggg(s(0), I, I)
log2_in_ggg(s(s(X)), I, Y) → U2_ggg(X, I, Y, half_in_ga(s(s(X)), X1))
U2_ggg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_ggg(X, I, Y, log2_in_ggg(X1, s(I), Y))
U3_ggg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_ggg(s(s(X)), I, Y)
U3_agg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_agg(s(s(X)), I, Y)
U1_ag(X, Y, log2_out_agg(X, 0, Y)) → log2_out_ag(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
LOG2_IN_GGG(s(s(X)), I, Y) → U2_GGG(X, I, Y, half_in_ga(s(s(X)), X1))
U2_GGG(X, I, Y, half_out_ga(s(s(X)), X1)) → LOG2_IN_GGG(X1, s(I), Y)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Instantiation
↳ PrologToPiTRSProof
U2_GGG(Y, half_out_ga(X1)) → LOG2_IN_GGG(X1, s, Y)
LOG2_IN_GGG(s, I, Y) → U2_GGG(Y, half_in_ga(s))
half_in_ga(s) → U4_ga(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s)
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
half_in_ga(x0)
U4_ga(x0)
half_in_aa
U4_aa(x0)
LOG2_IN_GGG(s, s, z0) → U2_GGG(z0, half_in_ga(s))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
LOG2_IN_GGG(s, s, z0) → U2_GGG(z0, half_in_ga(s))
U2_GGG(Y, half_out_ga(X1)) → LOG2_IN_GGG(X1, s, Y)
half_in_ga(s) → U4_ga(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s)
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
half_in_ga(x0)
U4_ga(x0)
half_in_aa
U4_aa(x0)
LOG2_IN_GGG(s, s, y0) → U2_GGG(y0, U4_ga(half_in_aa))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
LOG2_IN_GGG(s, s, y0) → U2_GGG(y0, U4_ga(half_in_aa))
U2_GGG(Y, half_out_ga(X1)) → LOG2_IN_GGG(X1, s, Y)
half_in_ga(s) → U4_ga(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s)
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
half_in_ga(x0)
U4_ga(x0)
half_in_aa
U4_aa(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ PrologToPiTRSProof
LOG2_IN_GGG(s, s, y0) → U2_GGG(y0, U4_ga(half_in_aa))
U2_GGG(Y, half_out_ga(X1)) → LOG2_IN_GGG(X1, s, Y)
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
half_in_ga(x0)
U4_ga(x0)
half_in_aa
U4_aa(x0)
half_in_ga(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ PrologToPiTRSProof
LOG2_IN_GGG(s, s, y0) → U2_GGG(y0, U4_ga(half_in_aa))
U2_GGG(Y, half_out_ga(X1)) → LOG2_IN_GGG(X1, s, Y)
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
U4_ga(x0)
half_in_aa
U4_aa(x0)
U2_GGG(x0, half_out_ga(s)) → LOG2_IN_GGG(s, s, x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
U2_GGG(x0, half_out_ga(s)) → LOG2_IN_GGG(s, s, x0)
LOG2_IN_GGG(s, s, y0) → U2_GGG(y0, U4_ga(half_in_aa))
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
U4_ga(x0)
half_in_aa
U4_aa(x0)
U2_GGG(x0, half_out_ga(s)) → LOG2_IN_GGG(s, s, x0)
LOG2_IN_GGG(s, s, y0) → U2_GGG(y0, U4_ga(half_in_aa))
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
log2_in_ag(X, Y) → U1_ag(X, Y, log2_in_agg(X, 0, Y))
log2_in_agg(0, I, I) → log2_out_agg(0, I, I)
log2_in_agg(s(0), I, I) → log2_out_agg(s(0), I, I)
log2_in_agg(s(s(X)), I, Y) → U2_agg(X, I, Y, half_in_ga(s(s(X)), X1))
half_in_ga(0, 0) → half_out_ga(0, 0)
half_in_ga(s(0), 0) → half_out_ga(s(0), 0)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
U2_agg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_agg(X, I, Y, log2_in_ggg(X1, s(I), Y))
log2_in_ggg(0, I, I) → log2_out_ggg(0, I, I)
log2_in_ggg(s(0), I, I) → log2_out_ggg(s(0), I, I)
log2_in_ggg(s(s(X)), I, Y) → U2_ggg(X, I, Y, half_in_ga(s(s(X)), X1))
U2_ggg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_ggg(X, I, Y, log2_in_ggg(X1, s(I), Y))
U3_ggg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_ggg(s(s(X)), I, Y)
U3_agg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_agg(s(s(X)), I, Y)
U1_ag(X, Y, log2_out_agg(X, 0, Y)) → log2_out_ag(X, Y)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
log2_in_ag(X, Y) → U1_ag(X, Y, log2_in_agg(X, 0, Y))
log2_in_agg(0, I, I) → log2_out_agg(0, I, I)
log2_in_agg(s(0), I, I) → log2_out_agg(s(0), I, I)
log2_in_agg(s(s(X)), I, Y) → U2_agg(X, I, Y, half_in_ga(s(s(X)), X1))
half_in_ga(0, 0) → half_out_ga(0, 0)
half_in_ga(s(0), 0) → half_out_ga(s(0), 0)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
U2_agg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_agg(X, I, Y, log2_in_ggg(X1, s(I), Y))
log2_in_ggg(0, I, I) → log2_out_ggg(0, I, I)
log2_in_ggg(s(0), I, I) → log2_out_ggg(s(0), I, I)
log2_in_ggg(s(s(X)), I, Y) → U2_ggg(X, I, Y, half_in_ga(s(s(X)), X1))
U2_ggg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_ggg(X, I, Y, log2_in_ggg(X1, s(I), Y))
U3_ggg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_ggg(s(s(X)), I, Y)
U3_agg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_agg(s(s(X)), I, Y)
U1_ag(X, Y, log2_out_agg(X, 0, Y)) → log2_out_ag(X, Y)
LOG2_IN_AG(X, Y) → U1_AG(X, Y, log2_in_agg(X, 0, Y))
LOG2_IN_AG(X, Y) → LOG2_IN_AGG(X, 0, Y)
LOG2_IN_AGG(s(s(X)), I, Y) → U2_AGG(X, I, Y, half_in_ga(s(s(X)), X1))
LOG2_IN_AGG(s(s(X)), I, Y) → HALF_IN_GA(s(s(X)), X1)
HALF_IN_GA(s(s(X)), s(Y)) → U4_GA(X, Y, half_in_aa(X, Y))
HALF_IN_GA(s(s(X)), s(Y)) → HALF_IN_AA(X, Y)
HALF_IN_AA(s(s(X)), s(Y)) → U4_AA(X, Y, half_in_aa(X, Y))
HALF_IN_AA(s(s(X)), s(Y)) → HALF_IN_AA(X, Y)
U2_AGG(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_AGG(X, I, Y, log2_in_ggg(X1, s(I), Y))
U2_AGG(X, I, Y, half_out_ga(s(s(X)), X1)) → LOG2_IN_GGG(X1, s(I), Y)
LOG2_IN_GGG(s(s(X)), I, Y) → U2_GGG(X, I, Y, half_in_ga(s(s(X)), X1))
LOG2_IN_GGG(s(s(X)), I, Y) → HALF_IN_GA(s(s(X)), X1)
U2_GGG(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_GGG(X, I, Y, log2_in_ggg(X1, s(I), Y))
U2_GGG(X, I, Y, half_out_ga(s(s(X)), X1)) → LOG2_IN_GGG(X1, s(I), Y)
log2_in_ag(X, Y) → U1_ag(X, Y, log2_in_agg(X, 0, Y))
log2_in_agg(0, I, I) → log2_out_agg(0, I, I)
log2_in_agg(s(0), I, I) → log2_out_agg(s(0), I, I)
log2_in_agg(s(s(X)), I, Y) → U2_agg(X, I, Y, half_in_ga(s(s(X)), X1))
half_in_ga(0, 0) → half_out_ga(0, 0)
half_in_ga(s(0), 0) → half_out_ga(s(0), 0)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
U2_agg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_agg(X, I, Y, log2_in_ggg(X1, s(I), Y))
log2_in_ggg(0, I, I) → log2_out_ggg(0, I, I)
log2_in_ggg(s(0), I, I) → log2_out_ggg(s(0), I, I)
log2_in_ggg(s(s(X)), I, Y) → U2_ggg(X, I, Y, half_in_ga(s(s(X)), X1))
U2_ggg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_ggg(X, I, Y, log2_in_ggg(X1, s(I), Y))
U3_ggg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_ggg(s(s(X)), I, Y)
U3_agg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_agg(s(s(X)), I, Y)
U1_ag(X, Y, log2_out_agg(X, 0, Y)) → log2_out_ag(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
LOG2_IN_AG(X, Y) → U1_AG(X, Y, log2_in_agg(X, 0, Y))
LOG2_IN_AG(X, Y) → LOG2_IN_AGG(X, 0, Y)
LOG2_IN_AGG(s(s(X)), I, Y) → U2_AGG(X, I, Y, half_in_ga(s(s(X)), X1))
LOG2_IN_AGG(s(s(X)), I, Y) → HALF_IN_GA(s(s(X)), X1)
HALF_IN_GA(s(s(X)), s(Y)) → U4_GA(X, Y, half_in_aa(X, Y))
HALF_IN_GA(s(s(X)), s(Y)) → HALF_IN_AA(X, Y)
HALF_IN_AA(s(s(X)), s(Y)) → U4_AA(X, Y, half_in_aa(X, Y))
HALF_IN_AA(s(s(X)), s(Y)) → HALF_IN_AA(X, Y)
U2_AGG(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_AGG(X, I, Y, log2_in_ggg(X1, s(I), Y))
U2_AGG(X, I, Y, half_out_ga(s(s(X)), X1)) → LOG2_IN_GGG(X1, s(I), Y)
LOG2_IN_GGG(s(s(X)), I, Y) → U2_GGG(X, I, Y, half_in_ga(s(s(X)), X1))
LOG2_IN_GGG(s(s(X)), I, Y) → HALF_IN_GA(s(s(X)), X1)
U2_GGG(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_GGG(X, I, Y, log2_in_ggg(X1, s(I), Y))
U2_GGG(X, I, Y, half_out_ga(s(s(X)), X1)) → LOG2_IN_GGG(X1, s(I), Y)
log2_in_ag(X, Y) → U1_ag(X, Y, log2_in_agg(X, 0, Y))
log2_in_agg(0, I, I) → log2_out_agg(0, I, I)
log2_in_agg(s(0), I, I) → log2_out_agg(s(0), I, I)
log2_in_agg(s(s(X)), I, Y) → U2_agg(X, I, Y, half_in_ga(s(s(X)), X1))
half_in_ga(0, 0) → half_out_ga(0, 0)
half_in_ga(s(0), 0) → half_out_ga(s(0), 0)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
U2_agg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_agg(X, I, Y, log2_in_ggg(X1, s(I), Y))
log2_in_ggg(0, I, I) → log2_out_ggg(0, I, I)
log2_in_ggg(s(0), I, I) → log2_out_ggg(s(0), I, I)
log2_in_ggg(s(s(X)), I, Y) → U2_ggg(X, I, Y, half_in_ga(s(s(X)), X1))
U2_ggg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_ggg(X, I, Y, log2_in_ggg(X1, s(I), Y))
U3_ggg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_ggg(s(s(X)), I, Y)
U3_agg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_agg(s(s(X)), I, Y)
U1_ag(X, Y, log2_out_agg(X, 0, Y)) → log2_out_ag(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
HALF_IN_AA(s(s(X)), s(Y)) → HALF_IN_AA(X, Y)
log2_in_ag(X, Y) → U1_ag(X, Y, log2_in_agg(X, 0, Y))
log2_in_agg(0, I, I) → log2_out_agg(0, I, I)
log2_in_agg(s(0), I, I) → log2_out_agg(s(0), I, I)
log2_in_agg(s(s(X)), I, Y) → U2_agg(X, I, Y, half_in_ga(s(s(X)), X1))
half_in_ga(0, 0) → half_out_ga(0, 0)
half_in_ga(s(0), 0) → half_out_ga(s(0), 0)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
U2_agg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_agg(X, I, Y, log2_in_ggg(X1, s(I), Y))
log2_in_ggg(0, I, I) → log2_out_ggg(0, I, I)
log2_in_ggg(s(0), I, I) → log2_out_ggg(s(0), I, I)
log2_in_ggg(s(s(X)), I, Y) → U2_ggg(X, I, Y, half_in_ga(s(s(X)), X1))
U2_ggg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_ggg(X, I, Y, log2_in_ggg(X1, s(I), Y))
U3_ggg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_ggg(s(s(X)), I, Y)
U3_agg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_agg(s(s(X)), I, Y)
U1_ag(X, Y, log2_out_agg(X, 0, Y)) → log2_out_ag(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
HALF_IN_AA(s(s(X)), s(Y)) → HALF_IN_AA(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
HALF_IN_AA → HALF_IN_AA
HALF_IN_AA → HALF_IN_AA
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
LOG2_IN_GGG(s(s(X)), I, Y) → U2_GGG(X, I, Y, half_in_ga(s(s(X)), X1))
U2_GGG(X, I, Y, half_out_ga(s(s(X)), X1)) → LOG2_IN_GGG(X1, s(I), Y)
log2_in_ag(X, Y) → U1_ag(X, Y, log2_in_agg(X, 0, Y))
log2_in_agg(0, I, I) → log2_out_agg(0, I, I)
log2_in_agg(s(0), I, I) → log2_out_agg(s(0), I, I)
log2_in_agg(s(s(X)), I, Y) → U2_agg(X, I, Y, half_in_ga(s(s(X)), X1))
half_in_ga(0, 0) → half_out_ga(0, 0)
half_in_ga(s(0), 0) → half_out_ga(s(0), 0)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
U2_agg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_agg(X, I, Y, log2_in_ggg(X1, s(I), Y))
log2_in_ggg(0, I, I) → log2_out_ggg(0, I, I)
log2_in_ggg(s(0), I, I) → log2_out_ggg(s(0), I, I)
log2_in_ggg(s(s(X)), I, Y) → U2_ggg(X, I, Y, half_in_ga(s(s(X)), X1))
U2_ggg(X, I, Y, half_out_ga(s(s(X)), X1)) → U3_ggg(X, I, Y, log2_in_ggg(X1, s(I), Y))
U3_ggg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_ggg(s(s(X)), I, Y)
U3_agg(X, I, Y, log2_out_ggg(X1, s(I), Y)) → log2_out_agg(s(s(X)), I, Y)
U1_ag(X, Y, log2_out_agg(X, 0, Y)) → log2_out_ag(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
LOG2_IN_GGG(s(s(X)), I, Y) → U2_GGG(X, I, Y, half_in_ga(s(s(X)), X1))
U2_GGG(X, I, Y, half_out_ga(s(s(X)), X1)) → LOG2_IN_GGG(X1, s(I), Y)
half_in_ga(s(s(X)), s(Y)) → U4_ga(X, Y, half_in_aa(X, Y))
U4_ga(X, Y, half_out_aa(X, Y)) → half_out_ga(s(s(X)), s(Y))
half_in_aa(0, 0) → half_out_aa(0, 0)
half_in_aa(s(0), 0) → half_out_aa(s(0), 0)
half_in_aa(s(s(X)), s(Y)) → U4_aa(X, Y, half_in_aa(X, Y))
U4_aa(X, Y, half_out_aa(X, Y)) → half_out_aa(s(s(X)), s(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Instantiation
U2_GGG(I, Y, half_out_ga(s, X1)) → LOG2_IN_GGG(X1, s, Y)
LOG2_IN_GGG(s, I, Y) → U2_GGG(I, Y, half_in_ga(s))
half_in_ga(s) → U4_ga(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s, s)
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
half_in_ga(x0)
U4_ga(x0)
half_in_aa
U4_aa(x0)
LOG2_IN_GGG(s, s, z1) → U2_GGG(s, z1, half_in_ga(s))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
U2_GGG(I, Y, half_out_ga(s, X1)) → LOG2_IN_GGG(X1, s, Y)
LOG2_IN_GGG(s, s, z1) → U2_GGG(s, z1, half_in_ga(s))
half_in_ga(s) → U4_ga(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s, s)
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
half_in_ga(x0)
U4_ga(x0)
half_in_aa
U4_aa(x0)
U2_GGG(s, z0, half_out_ga(s, x2)) → LOG2_IN_GGG(x2, s, z0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Narrowing
U2_GGG(s, z0, half_out_ga(s, x2)) → LOG2_IN_GGG(x2, s, z0)
LOG2_IN_GGG(s, s, z1) → U2_GGG(s, z1, half_in_ga(s))
half_in_ga(s) → U4_ga(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s, s)
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
half_in_ga(x0)
U4_ga(x0)
half_in_aa
U4_aa(x0)
LOG2_IN_GGG(s, s, y0) → U2_GGG(s, y0, U4_ga(half_in_aa))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
U2_GGG(s, z0, half_out_ga(s, x2)) → LOG2_IN_GGG(x2, s, z0)
LOG2_IN_GGG(s, s, y0) → U2_GGG(s, y0, U4_ga(half_in_aa))
half_in_ga(s) → U4_ga(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s, s)
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
half_in_ga(x0)
U4_ga(x0)
half_in_aa
U4_aa(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
U2_GGG(s, z0, half_out_ga(s, x2)) → LOG2_IN_GGG(x2, s, z0)
LOG2_IN_GGG(s, s, y0) → U2_GGG(s, y0, U4_ga(half_in_aa))
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s, s)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
half_in_ga(x0)
U4_ga(x0)
half_in_aa
U4_aa(x0)
half_in_ga(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
U2_GGG(s, z0, half_out_ga(s, x2)) → LOG2_IN_GGG(x2, s, z0)
LOG2_IN_GGG(s, s, y0) → U2_GGG(s, y0, U4_ga(half_in_aa))
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s, s)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
U4_ga(x0)
half_in_aa
U4_aa(x0)
U2_GGG(s, x0, half_out_ga(s, s)) → LOG2_IN_GGG(s, s, x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ NonTerminationProof
U2_GGG(s, x0, half_out_ga(s, s)) → LOG2_IN_GGG(s, s, x0)
LOG2_IN_GGG(s, s, y0) → U2_GGG(s, y0, U4_ga(half_in_aa))
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s, s)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)
U4_ga(x0)
half_in_aa
U4_aa(x0)
U2_GGG(s, x0, half_out_ga(s, s)) → LOG2_IN_GGG(s, s, x0)
LOG2_IN_GGG(s, s, y0) → U2_GGG(s, y0, U4_ga(half_in_aa))
half_in_aa → half_out_aa(0, 0)
half_in_aa → half_out_aa(s, 0)
half_in_aa → U4_aa(half_in_aa)
U4_ga(half_out_aa(X, Y)) → half_out_ga(s, s)
U4_aa(half_out_aa(X, Y)) → half_out_aa(s, s)